QT | 您所在的位置:网站首页 › 看门狗军团 厌恶dedsec › QT |
QT-QSqlQuery类操作SQLite数据库(创建、查询、删除、修改)详解
Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作。这里我们所说的“平台 独立”,既包括操作系统平台,也包括各个数据库平台,Qt支持以下几种数据库: QT自带SQLITE数据库,不需要再安装 QTDS在Qt4.7起已经被移除 1.QtSql要使用QtSql 模块的话,需要在.pro文件中添加这么一句: QT += sql 2.QSqlDatabaseQSqlDatabase类提供了一个接口,用于通过连接访问数据。QSqlDatabase的一个实例表示连接。该连接通过受支持的数据库驱动程序之一提供对数据库的访问,该驱动程序派生自QSqlDriver。 2.1 创建一个数据库示例如下 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("scooters.dat"); //如果本目录下没有该文件,则会在本目录下生成,否则连接该文件 if (!db.open()) { QMessageBox::warning(0, QObject::tr("Database Error"), db.lastError().text()); return false; }编译运行后,可以看到已经创建了该文件: 通过exec()成员函数来执行DML(数据操作语言)语句,如SELECT、INSERT、UPDATE和DELETE,以及DDL(数据定义语言)语句等. 比如: QSqlQuery query; query.exec("DROP TABLE students"); //删除名为students的表 4.接下来,我们讲讲如何导入数据创建表: query.exec("CREATE TABLE students (" "id INTEGER PRIMARY KEY AUTOINCREMENT, " "name VARCHAR(40) NOT NULL, " " score INTEGER NOT NULL, " "class VARCHAR(40) NOT NULL)"); //创建一个students表,标题分别为id、name、score、class" PRIMARY KEY AUTOINCREMENT,":表示该列为整数递增,如果为空时则自动填入1,然后在下面的每一行都会自动+1, PRIMARY KEY则表示该列作为列表的主键,通过它可以轻易地获取某一行数据 " INTEGER ":表示该列为带符号的整数 " VARCHAR(40) ":表示该列为可变长字符串,默认只能存储英文和数字或者utf-8,最多存储40个字节. "NOT NULL ":表示该列的内容不为空 导入数据: query.exec("INSERT INTO students (name, score,class) " "VALUES ('小张', 85, '初2-1班')"); //向students表里的(name, score,class)标题下插入一项数据'小张', 85, '初2-1班'添加后如下图所示: 如果我们有大串数据需要导入时,也可以使用prepare()来绑值,然后再通过bindValue()向绑值加入数据 示例代码如下所示: QStringList names; names QString id = query.value(0).toString(); QString name = query.value(1).toString(); QString score = query.value(2).toString(); QString classs = query.value(3).toString(); qDebug() |
CopyRight 2018-2019 实验室设备网 版权所有 |